<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="oH883" id="oH883"><span data-lake-id="u3ff6af65" id="u3ff6af65">典型回答</span></h1>
  <p data-lake-id="ueaddecdb" id="ueaddecdb"><br></p>
  <p data-lake-id="uf0ab8a4b" id="uf0ab8a4b"><span data-lake-id="u1c899486" id="u1c899486">jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据，在没有GUI图形的服务器上，它是运行期定位虚拟机性能问题的首选工具。</span></p>
  <p data-lake-id="ufd798773" id="ufd798773"><span data-lake-id="u972351a9" id="u972351a9">​</span><br></p>
  <p data-lake-id="u9a467740" id="u9a467740"><span data-lake-id="u168c049c" id="u168c049c">jstat位于java的bin目录下，主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控，包括了对Heap size和垃圾回收状况的监控。可见，Jstat是轻量级的、专门针对JVM的工具，非常适用。</span></p>
  <p data-lake-id="u0716a896" id="u0716a896"><span data-lake-id="uf9932a62" id="uf9932a62">​</span><br></p>
  <p data-lake-id="ub83b96ad" id="ub83b96ad"><span data-lake-id="u6baf7614" id="u6baf7614" style="color: rgb(51, 51, 51)">jstat 命令格式：</span></p>
  <p data-lake-id="u5bed1153" id="u5bed1153"><span data-lake-id="u7c719e49" id="u7c719e49" style="color: rgb(51, 51, 51)">​</span><br></p>
  <pre lang="java"><code>
 jstat -&lt;option&gt; [-t] [-h&lt;lines&gt;] &lt;vmid&gt; [&lt;interval&gt; [&lt;count&gt;]]
</code></pre>
  <p data-lake-id="uf29a8618" id="uf29a8618"><span data-lake-id="u3944a1c2" id="u3944a1c2" style="color: rgb(51, 51, 51)">​</span><br></p>
  <blockquote data-lake-id="u5441b6f6" id="u5441b6f6">
   <p data-lake-id="ub97a63a2" id="ub97a63a2" style="text-align: justify"><span data-lake-id="u87ed8ac9" id="u87ed8ac9" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">option — 选项，我们一般使用 -gcutil 查看gc情况</span></p>
   <p data-lake-id="u2727d262" id="u2727d262" style="text-align: justify"><span data-lake-id="u0b3c9813" id="u0b3c9813" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">vmid — VM的进程号，即当前运行的java进程号</span></p>
   <p data-lake-id="u159548cf" id="u159548cf" style="text-align: justify"><span data-lake-id="uc5911b04" id="uc5911b04" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">interval– 间隔时间，单位为秒或者毫秒</span></p>
   <p data-lake-id="ube4c00b2" id="ube4c00b2" style="text-align: justify"><span data-lake-id="ua16084a5" id="ua16084a5" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">count — 打印次数，如果缺省则打印无数次</span></p>
  </blockquote>
  <p data-lake-id="u266db162" id="u266db162" style="text-align: justify"><span data-lake-id="ueb0440be" id="ueb0440be" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">​</span><br></p>
  <h1 data-lake-id="m3ctR" id="m3ctR"><span data-lake-id="u8ba40d26" id="u8ba40d26" style="color: rgb(51, 51, 51)">扩展知识</span></h1>
  <p data-lake-id="ufc20498a" id="ufc20498a"><br></p>
  <h2 data-lake-id="pqJAR" id="pqJAR"><span data-lake-id="u65ab736c" id="u65ab736c">使用</span></h2>
  <p data-lake-id="u4ed34ee4" id="u4ed34ee4" style="text-align: justify"><span data-lake-id="u4c6f2f45" id="u4c6f2f45" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">​</span><br></p>
  <p data-lake-id="u150825c7" id="u150825c7" style="text-align: justify"><span data-lake-id="u4113ccfa" id="u4113ccfa" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">参数interval和count代表查询间隔和次数，如果省略这两个参数，说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况，一共查询5次，那命令行如下：</span></p>
  <p data-lake-id="u80abf414" id="u80abf414" style="text-align: justify"><span data-lake-id="u772792c0" id="u772792c0" class="lake-fontsize-12" style="color: rgb(51, 51, 51)">​</span><br></p>
  <pre lang="java"><code>
jstat -gc 5828 250 5
</code></pre>
  <p data-lake-id="u49e9192b" id="u49e9192b"><br></p>
  <h2 data-lake-id="q3DvH" id="q3DvH"><span data-lake-id="ue88f4852" id="ue88f4852">常见用法</span></h2>
  <h4 data-lake-id="Y4qLQ" id="Y4qLQ"><span data-lake-id="u873d86ad" id="u873d86ad">1、jstat –class&lt;pid&gt; : 显示加载class的数量，及所占空间等信息。</span></h4>
  <h4 data-lake-id="BCAgg" id="BCAgg"><span data-lake-id="ua089ae97" id="ua089ae97">2、</span><span data-lake-id="u4e1ac0df" id="u4e1ac0df">jstat -compiler &lt;pid&gt;</span><span data-lake-id="udce73a4c" id="udce73a4c">显示VM实时编译的数量等信息。</span></h4>
  <h4 data-lake-id="XdTzF" id="XdTzF"><span data-lake-id="u3f492f17" id="u3f492f17">3、jstat -gc &lt;pid&gt;: 可以显示gc的信息，查看gc的次数，及时间。</span></h4>
  <h4 data-lake-id="tSKd1" id="tSKd1"><span data-lake-id="u30cb03e6" id="u30cb03e6">4、jstat -gccapacity &lt;pid&gt;:可以显示，VM内存中三代（young,old,perm）对象的使用和占用大小</span></h4>
  <h4 data-lake-id="qLm27" id="qLm27"><span data-lake-id="u8be6f20e" id="u8be6f20e">5、jstat -gcutil &lt;pid&gt;:统计gc信息</span></h4>
  <h4 data-lake-id="OkAaC" id="OkAaC"><span data-lake-id="ue1068695" id="ue1068695">6、jstat -gcnew &lt;pid&gt;:年轻代对象的信息。</span></h4>
  <h4 data-lake-id="ZOp0n" id="ZOp0n"><span data-lake-id="u93188765" id="u93188765">7、jstat -gcnewcapacity&lt;pid&gt;: 年轻代对象的信息及其占用量。</span></h4>
  <h4 data-lake-id="O6ZzQ" id="O6ZzQ"><span data-lake-id="u8e88e32a" id="u8e88e32a">8、jstat -gcold &lt;pid&gt;：old代对象的信息。</span></h4>
  <h4 data-lake-id="yGpjt" id="yGpjt"><span data-lake-id="u9dd8d9d9" id="u9dd8d9d9">9、stat -gcoldcapacity &lt;pid&gt;: old代对象的信息及其占用量。</span></h4>
  <h4 data-lake-id="HKHZ7" id="HKHZ7"><span data-lake-id="ufff62320" id="ufff62320">10、jstat -gcpermcapacity&lt;pid&gt;: perm对象的信息及其占用量。</span></h4>
  <h4 data-lake-id="jhFAQ" id="jhFAQ"><span data-lake-id="u7ceba35c" id="u7ceba35c">11、jstat -printcompilation &lt;pid&gt;：当前VM执行的信息。</span></h4>
 </body>
</html>